﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using System.Xml;
using System.IO;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Configuration;
using System.Collections;


namespace Siser.Web.Models
{
    public class ReporteFijo
    {
        public void CrearReporteVacio(string path,string fecha_generacion)
        {


            XmlTextWriter reporte1 = new XmlTextWriter(path, System.Text.Encoding.UTF8);
            reporte1.Formatting = Formatting.Indented;
            reporte1.Indentation = 2;
            reporte1.WriteStartDocument(false);
            reporte1.WriteComment("XML reporte SEPRO");
            reporte1.WriteStartElement("CuerpoInforme");
            reporte1.WriteStartElement("CabeceraInforme");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("AntecedentesPM");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("LimitesRadiacion");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("RegistroNivelesOP");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("RutaGraficos");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("CampoObservaciones");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("CampoConclusiones");
            reporte1.WriteEndElement();
            reporte1.WriteStartElement("CampoRecomendaciones");
            reporte1.WriteEndElement();
            reporte1.WriteEndElement();
            reporte1.Close();
        }
        public void llenar_reporte(string path,string fecha_genercion, ReporteSEPRO reporte, MemoryStream ms, MemoryStream ms1) // SE CAMBIO INFOREPORTE POR REPORTE SEPRO
        {
            XmlDocument reporteSEPRO;
            XmlNode padre;
            XmlNode actual;

            reporteSEPRO = new XmlDocument();
            reporteSEPRO.Load(path);
            padre = reporteSEPRO.DocumentElement;
            actual = padre.FirstChild;
            XmlElement datoscabecera = reporteSEPRO.CreateElement("intro");
            datoscabecera.InnerXml = "<Titulo></Titulo>" +
                                      "<FechaReporte></FechaReporte>" +
                                      "<PeriodoMedicion></PeriodoMedicion>";

            datoscabecera.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            datoscabecera["Titulo"].InnerText = "Informe Mediciones Radiologicas.";
            datoscabecera["FechaReporte"].InnerText = fecha_genercion;
            datoscabecera["PeriodoMedicion"].InnerText = reporte.fechaInicio + "al " + reporte.fechaFin;
            actual.InsertAfter(datoscabecera, actual.LastChild);

            actual = padre.FirstChild.NextSibling;
            XmlElement DatosTablaUbicacion = reporteSEPRO.CreateElement("TablaDatosUbicacion");
            DatosTablaUbicacion.InnerXml = "<Instalacion></Instalacion>" +
                                            "<IdEquipo></IdEquipo>" +
                                            "<Proceso></Proceso>" +
                                            "<Detector></Detector>" +
                                            "<Calibracion></Calibracion>" +
                                            "<Mantencion></Mantencion>" +
                                            "<Verificacion></Verificacion>" +
                                            "<Estado></Estado>";


            DatosTablaUbicacion.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            DatosTablaUbicacion["Instalacion"].InnerText = reporte.instalacion;
            DatosTablaUbicacion["IdEquipo"].InnerText = reporte.equipo_id;
            DatosTablaUbicacion["Proceso"].InnerText = reporte.proceso;
            DatosTablaUbicacion["Detector"].InnerText = reporte.detector;
            DatosTablaUbicacion["Calibracion"].InnerText = reporte.calibracion;
            DatosTablaUbicacion["Mantencion"].InnerText = reporte.mantencion;
            DatosTablaUbicacion["Verificacion"].InnerText = reporte.verificacion;
            DatosTablaUbicacion["Estado"].InnerText = reporte.estado;
            actual.InsertAfter(DatosTablaUbicacion, actual.LastChild);

            actual = padre.FirstChild.NextSibling.NextSibling;
            XmlElement TablaSeteoMedicion = reporteSEPRO.CreateElement("SeteoAlarmas");
            TablaSeteoMedicion.InnerXml = "<Registro></Registro>" +
                                            "<Investigacion></Investigacion>" +
                                            "<Intervencion></Intervencion>";

            TablaSeteoMedicion.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            TablaSeteoMedicion["Registro"].InnerText = reporte.operacion;
            TablaSeteoMedicion["Investigacion"].InnerText = reporte.investigacion;
            TablaSeteoMedicion["Intervencion"].InnerText = reporte.intervencion;
            actual.InsertAfter(TablaSeteoMedicion, actual.LastChild);

            actual = padre.FirstChild.NextSibling.NextSibling.NextSibling;
            XmlElement Estadisticas = reporteSEPRO.CreateElement("DatosEstadisticos");
            Estadisticas.InnerXml = "<Promedio></Promedio>" +
                                            "<Maximo></Maximo>" +
                                            "<Minimo></Minimo>" +
                                            "<DesviacionEst></DesviacionEst>" +
                                            "<Varianza></Varianza>" +
                                            "<Dosis></Dosis>" +
                                            "<Distancia></Distancia>" +
                                            "<TotalDato></TotalDato>" +
                                            "<NoOperativo></NoOperativo>";

            Estadisticas.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            Estadisticas["Promedio"].InnerText = reporte.promedio;
            Estadisticas["Maximo"].InnerText = reporte.maximo;
            Estadisticas["Minimo"].InnerText = reporte.minimo;
            Estadisticas["DesviacionEst"].InnerText = reporte.desviacion;
            Estadisticas["Varianza"].InnerText = reporte.varianza;
            Estadisticas["Dosis"].InnerText = reporte.dosis;
            Estadisticas["Distancia"].InnerText = reporte.distancia;
            Estadisticas["TotalDato"].InnerText = reporte.num_muestra;
            Estadisticas["NoOperativo"].InnerText = reporte.diasNoOP;
            actual.InsertAfter(Estadisticas, actual.LastChild);

            actual = padre.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling;
            XmlElement Rutas = reporteSEPRO.CreateElement("RutaGrafico");
            Rutas.InnerXml = "<RutaDatos></RutaDatos>" +
                               "<RutaDosis></RutaDosis>";

            Rutas.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            Rutas["RutaDatos"].InnerText = reporte.imagen_puntos;
            Rutas["RutaDosis"].InnerText = reporte.imagen_dosis;

            actual.InsertAfter(Rutas, actual.LastChild);


            actual = padre.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling;
            XmlElement Observaciones = reporteSEPRO.CreateElement("ObservacionesyEventos");
            Observaciones.InnerXml = "<Observacion></Observacion>";


            Observaciones.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            Observaciones["Observacion"].InnerText = reporte.observacion;
            actual.InsertAfter(Observaciones, actual.LastChild);


            actual = padre.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling;
            XmlElement Conclusion = reporteSEPRO.CreateElement("Conclusiones");
            Conclusion.InnerXml = "<Conclusion1></Conclusion1>";


            Conclusion.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            Conclusion["Conclusion1"].InnerText = reporte.conclusion;
            actual.InsertAfter(Conclusion, actual.LastChild);

            actual = padre.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling;
            XmlElement Recomendacion = reporteSEPRO.CreateElement("Recoendaciones");
            Recomendacion.InnerXml = "<Recomendacion1></Recomendacion1>";


            Recomendacion.AppendChild(reporteSEPRO.CreateWhitespace("\r\n"));
            Recomendacion["Recomendacion1"].InnerText = reporte.recomendacion;
            actual.InsertAfter(Recomendacion, actual.LastChild);




            XmlTextWriter GrabarRegistros = new XmlTextWriter(path, System.Text.Encoding.UTF8);
            reporteSEPRO.WriteTo(GrabarRegistros);
            GrabarRegistros.Close();

        }



    }
}